In a publish/subscribe system, senders of messages (publishers) are characterized into classes without the knowledge of how many, if any, receivers (subscribers) there may be. Subscribers express interest in one or more classes of messages without knowing how many publishers there are. The subscribers will only receive messages that are of interest to them.
In conventional publish/subscribe systems, a publisher connected to subscribers through an intermediary or “broker”. In these systems, publishers post messages to the broker and subscribers register subscriptions with the broker. The broker receives messages from the publishers, filters the messages to identify the topic or content, and then forwards the messages to interested subscribers.
In a typical system, messages were required to be delivered to all live subscribers in the order in which the messages were published. The requirement for messages to be delivered in order was to be maintained even despite failures in the system. To protect against failures, some conventional systems employ network attached storage that internally replicate the messages using a redundant array of inexpensive disks (RAID) system or other complex data replication techniques. These conventional systems are big, expensive, and are difficult to setup.
An improved messaging system is desirable.